﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntitiesLayer;
using DAL;
using DAL.Repositorios;

namespace BLL
{
    public class GestorMantRoles
    {



        public void ModificarPermiso(int idPermiso, string nombre) {

            Permiso p = new Permiso(idPermiso, nombre);

            UnitOfWork.PermisoRepositoryModificar.Update(p);
            UnitOfWork.PermisoRepositoryModificar.Save();
        }
        public void EliminarRol(Rol rol){

            UnitOfWork.RolRepository.Delete(rol);
            UnitOfWork.RolRepository.Save();

        }

        public void registrarRol(string nombre) {

            Rol rol = new Rol(nombre);

            UnitOfWork.RolRepository.Insert(rol);
            UnitOfWork.RolRepository.Save();
        }

        public void ModificarRol(int idRol, string nombre) {

            Rol rol = new Rol(nombre, idRol: idRol);

            UnitOfWork.RolRepository.Update(rol);
            UnitOfWork.RolRepository.Save();

        }

        public void asignarRolPermiso(int idRol, int idPermiso ){

            UnitOfWork.RolRelacionRepository.Asign(idRol, idPermiso);
        }

        public void RemoverRolPermiso(int idRol, int idPermiso)
        {

            UnitOfWork.RolRelacionRepository.Remove(idRol, idPermiso);
        }

        public IEnumerable<Permiso> ListarPermisos() {

            return UnitOfWork.PermisoRepository.GetAll();
        
        }

        public IList<Permiso> PermisoDeRol(int idRol) { 
        
            Rol rol = UnitOfWork.RolRepository.GetById(idRol);

            return rol!=null?rol.ListaPermisos:null;
        }

        public IEnumerable<Rol> ListarRoles() {
            
            return UnitOfWork.RolRepository.GetAll();
        }
    
    }
}
